package com.atguigu.gmall.cart.client;

import com.atguigu.gmall.cart.client.impl.CartFeignFallback;
import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.model.cart.CartInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

/**
 *
 *
 * @author : zjj
 * @date : 2021/2/4 17:14
 */

@FeignClient(name = "service-cart",fallback = CartFeignFallback.class)
public interface CartFeignClient {
    /**
     * 远程调用的接口 本质调用 CartApiController 中的 @PostMapping("addToCart/{skuId}/{skuNum}")
     *
     * @param skuId     skuId
     * @param skuNum    商品数量
     * @return          结果
     */
    @PostMapping("/api/cart/addToCart/{skuId}/{skuNum}")
    Result addToCart(@PathVariable("skuId") Long skuId, @PathVariable("skuNum") Integer skuNum);

    /**
     * 商品列表
     * @param userId    用户id
     * @return          列表
     */
    @GetMapping("/api/cart/getCartCheckedList/{userId}")
    List<CartInfo> getCartCheckedList(@PathVariable String userId);

    /**
     * 加载数据
     *
     * @param userId    用户id
     * @return          数据
     */
    @GetMapping("/api/cart/loadCartCache/{userId}")
    Result loadCartCache(@PathVariable("userId") String userId);

}
